package com.singleton.lazy;

/**
 * 懒汉式 线程不安全
 * 1 构造方法私有
 * 2 成员变量是自己
 * 3 提供一个public static getInstance方法，在掉方法的时候判断实例是否存在，不存在才创建实例，
 *
 */
public class Singleton_03 {
    public static void main(String[] args) {
        Single03 instance1 = Single03.getInstance();
        Single03 instance2 = Single03.getInstance();
        System.out.println(instance1 == instance2 );
        System.out.println("instance1 hashcode :" + instance1);
        System.out.println("instance2 hashcode :" + instance2);
    }
}

class Single03{

    //1 构造器私有
    private Single03(){}

    //2 成员变量是自己 ,需要是静态的，因为getInstance是个静态方法，变量不是静态的话用不了
    private static Single03 single03 ;

    //3 public static getInstance 返回单例实例
    public static Single03 getInstance(){
        if (single03 == null){
            single03 = new Single03();
        }
        return single03;
    }


}
